From: Cosimo Cecchi Date: Mon, 22 Apr 2013 22:04:56 +0000 (-0400) Subject: workspace: only scale a layout row when it doesn't fit X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~1013^2^2~4304 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=ab26fc438a8ec2b16e5bda3e7129d5ff9496c50d;p=gnome-shell.git workspace: only scale a layout row when it doesn't fit Instead of applying an additional scale factor to all the rows in the layout, only do it for those rows that don't fit. This avoids the visual distraction of resizing a row when there's no need to. --- diff --git a/js/ui/workspace.js b/js/ui/workspace.js index bd8519dc4..a8d16ab19 100644 --- a/js/ui/workspace.js +++ b/js/ui/workspace.js @@ -768,27 +768,25 @@ const LayoutStrategy = new Lang.Class({ let slots = []; // Do this in three parts. - let width = 0; let height = 0; for (let i = 0; i < rows.length; i++) { let row = rows[i]; - width = Math.max(width, row.width); height += row.height + this._rowSpacing; } height -= this._rowSpacing; - // If the window layout doesn't fit in the actual - // geometry, then apply this additional scale to - // tne entire layout. - let additionalScale = Math.min(1, area.width / width, area.height / height); - let y = 0; for (let i = 0; i < rows.length; i++) { let row = rows[i]; - row.x = area.x + (Math.max(area.width - row.width, 0) / 2) * additionalScale; - row.y = area.y + (y + Math.max(area.height - height, 0) / 2) * additionalScale; + + // If this window layout row doesn't fit in the actual + // geometry, then apply an additional scale to it. + row.additionalScale = Math.min(1, area.width / row.width, area.height / height); + + row.x = area.x + (Math.max(area.width - row.width, 0) / 2) * row.additionalScale; + row.y = area.y + (y + Math.max(area.height - height, 0) / 2) * row.additionalScale; y += row.height + this._rowSpacing; row.windows.sort(Lang.bind(this, function(a, b) { @@ -802,7 +800,7 @@ const LayoutStrategy = new Lang.Class({ for (let j = 0; j < row.windows.length; j++) { let window = row.windows[j]; - let s = scale * this._computeWindowScale(window) * additionalScale; + let s = scale * this._computeWindowScale(window) * row.additionalScale; let cellWidth = window.actor.width * s; let cellHeight = window.actor.height * s;